package com.example.ordersystem.dao;


import com.example.ordersystem.domain.Order;
import org.apache.ibatis.annotations.*;
import org.springframework.stereotype.Repository;

import java.util.List;


@Repository
@Mapper
public interface OrderDAOByMybatis {

    /**
     * 添加一条订单记录
     *
     * @param order 待插入的订单
     * @return 订单记录的主键
     */

    /**order是一个关键字
     * insert into order不能执行,需要数据库名.表名 insert into orderingsystem.order
     * 所以还是修改表名编程orders*/
    @Insert("insert into orders(num,customer,total,birth,customeraddress,remark,status) values" +
            "(#{num},#{customer},#{total},#{birth},#{customeraddress},#{remark},#{status})")
    int addOrder(Order order);


    /**
     * 根据订单号删除一个订单
     * @param num 订单号
     * @return 返回值无实际用
     */
    @Delete("delete from orders where num=#{num}")
    int deleteOrderByNum(@Param("num") String num);

    /**
     * 查询所有订单信息
     *
     * @return 所有订单信息
     */
    @Select("select * from orders order by birth desc")
    List<Order> findAllOrder();


    /**
     * 根据时期区间，查询订单
     *
     * @param begin 日期起点
     * @param end   日期终点
     * @return 在日期区间的订单
     */
    @Select("select * from orders where birth>#{begin} and birth<#{end}")
    List<Order> findBetweenAnd(@Param("begin") String begin, @Param("end") String end);

    /**
     * 根据顾客编号查询订单
     *
     * @param customer 顾客编号
     * @return 顾客的所有订单
     */
    @Select("select * from orders where customer=#{customer} order by birth desc")
    List<Order> findByCustomer(@Param("customer") int customer);

    /**
     * 根据订单编号,更新订单状态
     * @param num 订单编号
     * @param status 订单状态
     */
    @Update("update orders set status=#{status} where num=#{num}")
    int updateStatusByNum(@Param("num") String num, @Param("status") String status);
}
